Surface classification reporting and sensor tuning for a computer peripheral device

ABSTRACT

A system including a first device with a surface and an identification feature that includes or encodes machine-readable data related to the surface, and a second device including a sensor and one or more processors coupled to the sensor that are configured to determine a relative displacement of the second device as it is moved along the surface of the first device. The second device receives the machine-readable data related to the surface from the identification features from the first device and configures the second device to determine the relative displacement along the surface differently (e.g., improves displacement tracking) based on the machine-readable data related to the surface.

BACKGROUND

Input devices are commonplace in modern society and are typically usedto convert human-induced analog inputs (e.g., touches, clicks, motions,touch gestures, button presses, scroll wheel rotations, etc.) made inconjunction with an input device into digital signals for computerprocessing. An input device can include any device that can provide dataand control signals to a computing system. Some non-limiting examples ofinput devices include computer mice, keyboards, virtual reality and/oraugmented reality controllers, touch pads, remote controls, gamingcontrollers, joysticks, trackballs, and the like. Some non-limitingexamples of computing systems include desktops, laptops, tablets and“phablet” computers, smart phones, personal digital assistants, wearabledevices (e.g., smart watches, glasses), virtual reality (VR) and/oraugmented reality (AR) systems, and the like.

Computer mice, in particular, have undergone significant improvements infunctionality, accuracy, ergonomics, and versatility. Earlier designs,including the “mechanical mouse,” used a rubber ball coupled to twofreely rotating rollers situated 90 degrees from one another to rollalong an underlying surface. The first roller detects forward-backwardmotion of the mouse and the second roller detects left-right motion,with each roller sharing the same shaft as a corresponding encoder wheelwith slotted edges that interrupt infra-red light beams generateelectrical pulses that can be translated to wheel movement. Mechanicalmice were notorious for picking up dirt, unpredictable tracking, andneeding frequent disassembly and cleaning.

Contemporary mice may include optical mice using optoelectronic sensorsto compare successive images of an underlying surface on which thecomputer mouse operates to interpret movement. Technologicalimprovements have allowed optical mice to functionally track over variedtypes of surfaces (e.g., table tops, paper, glass, etc.), while avoidingsome of the problems associated with mechanical mice. Optical micetypically employ light-emitting diodes (LEDs) and/or laser (e.g.coherent) light and an imaging array of photodiodes to detect movementrelative to the underlying surface, which has proven to be much morereliant and robust as compared to their mechanical counterparts.Multi-surface use allows usage over a wider range of applications, whichcan be desirable by the average consumer. Despite these advantages, moreimprovements are needed for the more discerning consumers.

BRIEF SUMMARY

In certain embodiments, a system comprises: a first device (e.g., amouse pad) including a surface and an identification feature, whereinthe identification feature includes or encodes machine-readable datarelated to the surface; a second device (e.g., a computer peripheraldevice) including a sensor and one or more processors coupled to thesensor, wherein the one or more processors are configured to: determinea relative displacement of the second device as it is moved along thesurface of the first device by a user of the second device; receive themachine-readable data related to the surface from the identificationfeature of the first device; and configure the second device todetermine the relative displacement along the surface differently basedon the machine-readable data related to the surface. In some aspects,the first device can include a non-contact power transmitter, the seconddevice receives power from the transmitter, and the machine-readabledata related to the surface is encoded in the power transmitted from thefirst device to the second device. In some embodiments, theidentification feature is a near-field communication (NFC)-type shortrange non-contact processor that is detectable by the second device whenthe second device is in close proximity to the first device, where thedetermining the relative displacement along the surface differentlybased on the machine-readable data related to the surface includesswitching from a first surface tuning profile to a second surface tuningprofile, and where the second device reverts back from the secondsurface tuning profile to the first surface tuning profile when not inproximity to the first device. The sensor can be an optical sensor, andthe identification feature can be a pattern encoded onto the surfacethat is readable by the optical sensor. The machine-readable datarelated to the surface can be a reference used by the second device tolocate surface tuning information. The data related to the surface cancharacterize the surface directly and can be used by the second devicefor its own tuning. The second device can include a universal tuningmechanism that is overridden when it detects the data related to thesurface.

In some embodiments, a computer-implemented method comprises:generating, by a computer peripheral device, optical data correspondingto a surface of an underlying device that the computer peripheral deviceis placed upon; determining a relative displacement of the computerperipheral device as it is moved along a surface of an underlying deviceby a user of the computer peripheral device, wherein the underlyingdevice includes a surface and an identification feature that includes orencodes machine-readable data related to the surface; receiving themachine-readable data related to the surface from the identificationfeature of the underlying device; and configuring the computerperipheral device to determine the relative displacement along thesurface differently based on the machine-readable data related to thesurface.

In further embodiments, the computer peripheral device includes anon-contact power transmitter, the underlying device receives power fromthe transmitter, and the machine-readable data related to the surface isencoded in the power transmitted from the underlying device to thecomputer peripheral device. In some cases, the identification feature isa near-field communication (NFC)-type short range non-contact processorthat is detectable by the computer peripheral device when the computerperipheral device is in close proximity to the underlying device, wherethe determining the relative displacement along the surface differentlybased on the machine-readable data related to the surface includesswitching from a first surface tuning profile to a second surface tuningprofile, and wherein the computer peripheral device reverts back fromthe second surface tuning profile to the first surface tuning profilewhen not in proximity to the underlying device. The optical data can begenerated by an optical sensor of the computer peripheral device, andthe identification feature may be a pattern encoded onto the surfacethat is readable by the optical sensor. The machine-readable datarelated to the surface can be a reference used by the computerperipheral device to locate surface tuning information. In some cases,the data related to the surface characterizes the surface directly andcan be used by the computer peripheral device for its own tuning. Insome implementations, the computer peripheral device includes auniversal tuning mechanism that is overridden when it detects the datarelated to the surface.

In certain embodiments, a computer mouse includes: a housing; an opticalsensor coupled to the housing, the optical sensor configured to generateoptical data corresponding to a surface that the computer mouse isplaced upon; and one or more processors coupled to the optical sensorand the housing, the one or more processors configured to: determine arelative displacement of the computer mouse as it is moved along asurface of a mouse pad; receive machine-readable data related to thesurface of the mouse pad from an identification feature of the mousepad; and configure the computer mouse to determine the relativedisplacement along the surface of the mouse pad differently based on themachine-readable data related to the surface.

In some cases, the mouse pad can include a non-contact powertransmitter, the computer mouse receives power from the transmitter, andthe machine-readable data related to the surface is encoded in the powertransmitted from the mouse pad to the computer mouse. In someimplementations, the identification feature is a near-fieldcommunication (NFC)-type short range non-contact processor that isdetectable by the computer mouse when the computer mouse is in closeproximity to the mouse pad, wherein the determining the relativedisplacement along the surface differently based on the machine-readabledata related to the surface includes switching from a first surfacetuning profile to a second surface tuning profile, and wherein thecomputer peripheral device reverts back from the second surface tuningprofile to the first surface tuning profile when not in proximity to themouse pad. In some embodiments, the sensor can be, for example, anoptical sensor, and the identification feature can be a pattern encodedonto the surface that is readable by the optical sensor. In someimplementations, the machine-readable data related to the surface is areference used by the computer mouse to locate surface tuninginformation. The data related to the surface characterizes the surfacedirectly and can be used by the computer mouse for its own tuning. Insome cases, the computer mouse includes a universal tuning mechanismthat is overridden when it detects the data related to the surface.

This summary is not intended to identify key or essential features ofthe claimed subject matter, nor is it intended to be used in isolationto determine the scope of the claimed subject matter. The subject mattershould be understood by reference to appropriate portions of the entirespecification of this disclosure, any or all drawings, and each claim.

The foregoing, together with other features and examples, will bedescribed in more detail below in the following specification, claims,and accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The features of the various embodiments described above, as well asother features and advantages of certain embodiments of the presentinvention will be more apparent from the following detailed descriptiontaken in conjunction with the accompanying drawings, in which:

FIG. 1 shows an example of a computing system that can include any of avariety of host computing devices and peripheral devices, withperipheral devices that can be configured to perform aspects of thevarious inventive concepts described herein;

FIG. 2 shows a system for operating a peripheral input device, accordingto certain embodiments;

FIG. 3 is a simplified block diagram of a computing device, according tocertain embodiments;

FIG. 4A shows aspects of an input device, according to certainembodiments;

FIG. 4B shows aspects of a bottom portion of input device, according tocertain embodiments;

FIG. 5 shows an input device operating on a mouse pad, according tocertain embodiments;

FIG. 6 shows an input device operating on a wooden table, according tocertain embodiments;

FIG. 7 shows an input device operating on a glass table, according tocertain embodiments;

FIG. 8 is a chart showing various properties of the underlying surfacethat can affect movement tracking accuracy for an input device,according to certain embodiments;

FIG. 9 is a simplified flow chart showing aspects of a method forimproving computer peripheral device tracking accuracy on a work surfaceusing surface classification and sensor tuning, according to certainembodiments;

FIG. 10 is a simplified flow chart showing aspects of another method forimproving computer peripheral device tracking accuracy on a work surfaceusing surface classification and sensor tuning, according to certainembodiments;

FIG. 11 is a simplified flow chart showing aspects of a further methodfor improving computer peripheral device tracking accuracy on a worksurface using surface classification and sensor tuning, according tocertain embodiments;

FIG. 12A shows a powered mousepad coupled to a laptop computer with adisplay and keyboard;

FIG. 12B shows a QR code configured on a mouse pad, according to certainembodiments;

FIG. 12C shows an RFID circuit configured within a mouse pad, accordingto certain embodiments;

FIG. 12D shows a graphical user interface (GUI) on a display that isconfigured for selecting a surface type to be used by a computerperipheral device, according to certain embodiments; and

FIG. 13 is a simplified flow chart showing aspects of a method forimproving computer peripheral device tracking accuracy on a work surfaceusing surface classification data received from an external source,according to certain embodiments.

Throughout the drawings, it should be noted that like reference numbersare typically used to depict the same or similar elements, features, andstructures.

DETAILED DESCRIPTION

The present disclosure relates in general to input devices, and inparticular to improved surface tracking a computer peripheral devicebased on a surface classification.

In the following description, various embodiments of methods and systemsfor improving computer peripheral device tracking accuracy on a worksurface using surface classification and sensor tuning will bedescribed. For purposes of explanation, specific configurations anddetails are set forth in order to provide a thorough understanding ofthe embodiments. However, it will also be apparent to one skilled in theart that the embodiments may be practiced without the specific details.Furthermore, well-known features may be omitted or simplified in ordernot to obscure the embodiment being described.

Optical sensors have replaced mouse balls and encoders to detectcomputer mouse displacement over twenty years ago, however some issuesremain the same. Some of the first designs were focused on making thesystem improve its tracking quality, avoid jumps, glitches, drop-out,jitter, erratic/spurious motion and prevent runaway cursor movementwhile lifting the computer mouse. For that, significant improvementshave been achieved by optimizing the optical geometry configuration,using different types of illumination light sources, increasing thenumber of pixels in the sensor array, and optimizing the flash rate andcomputing power. Early models started with red light emitting diodes(LEDs), vertical cavity surface emitting lasers (VCSEL), specularoptical configurations, and more recently infra-red LEDs with specularoptical configuration. Optical-based two-dimensional (2D) sensorperformance can depend in large part on surface characteristics, andparticularly the amount of observable features on a surface captured bythe optical sensor (e.g., CMOS optical sensor) and how the system'stracking algorithm can perform correlation operations on them. Opticalsensor hardware and corresponding algorithms have been optimized overthe last ten years to exhibit consistent tracking on a wide range ofsurfaces, which presents a technical problem of limiting the sensorperformance and implementing performance tradeoffs (e.g., implementingsuboptimal sensor operational configurations on surfaces with highquality, easily detectable features) to accommodate the worst casetracking scenarios to ensure that tracking accuracy is maintained at aparticular level across all types of surfaces, but at the cost ofpreventing the user from benefiting from an improved matching of opticalsensor operational configurations and surface features.

Due to the modern trend of computer mouse designs catering to wide-useconfigurations, potential improvements in tracking for specific usecases, such as gaming and e-sports applications, have not been realized.Embodiments of the invention are directed to such improvements, whichinclude a system that can better adjust (e.g., tune) operationalparameters of the optical sensor to the physical properties andcharacteristics of a currently tracked surface, which can markedlyimprove surface tracking. To achieve this, the optical sensor andcorresponding circuitry can receive information indicating a type ofsurface the computer mouse is operating upon with a high confidencelevel to avoid potentially poor performance by tuning the optical sensorto the wrong surface type. In other words, an aspect of the presentinvention is knowing precisely what type of surface the computer mouseis operating on so that its operational parameters can be set to tighterranges, which can avoid wasted energy and/or mild tracking performances,as is often the case in conventional systems that have very widesettings to accommodate worst case tracking scenarios. Additionally, asa constraint of the system, a user may decide to change the surfacebeing tracked at any time (e.g., moving the computer mouse from a mousepad to a wooden desk). Therefore, the novel system may adapt andreconfigure its operational parameters based on a detection of a changeof characteristics of a currently tracked surface. Thus, embodiments ofthe present invention present a technical solution by way of a computerperipheral device (e.g., computer mouse) with an optical sensor that canbe dynamically optimized for any given type of surface, which eliminatesthe need to accommodate worst case surface characteristics withuniversal use and lower performing sensor tuning schemas, and canprovide improved and in some cases optimal performance over a wide arrayof surface types.

The embodiments presented herein present many advantages. For instance,the operational configuration (the “operation”) of the optical sensorcan by dynamically set to match a nature of a currently used surface.Improved 2D tracking accuracy and lift-off distance detection arepossible because the optical sensor can have prior information about thesurface characteristics and use it to better detect changes (e.g., onesthat may indicate lift-off) for a specific surface. Lift-off distancemay be a distance between the optical sensor and the surface when thecomputer peripheral device is lifted/tilted off of the surface. In somecases, power consumption can be improved due to less waste fromtrade-offs in optical sensor operational settings.

In summary, embodiments of the disclosure provide systems and methodsfor improving input device tracking accuracy on a work surface usingsurface classification and sensor tuning, according to certainembodiments. These surface classification systems allow an improvedtracking experience for myriad surface types by, for example, extractingsurface brightness and surface contrast data to determine a surfacecategory in order to classify them. Based on validated sets ofcharacteristics, the system can adjust the optical sensor operationalparameters to better match with the given detected surface type. Theacquisition of surface parameters and optical sensor adjustment to matchthe surface type can be triggered automatically by the system ormanually by user action (e.g., button selection, software UI, or thelike). By way of example, and as further described in conjunction withFIGS. 9-11 below, some embodiments can include a computer peripheraldevice (e.g., a computer mouse) with an optical sensor configured togenerate optical data corresponding to a surface that the computerperipheral device is placed upon. A processors can be coupled to theoptical sensor and configured to determine, based on the optical data, arelative displacement of the computer peripheral device along thesurface, identify one or more characteristics of the surface based onthe optical data, compare the one or more characteristics with one ormore corresponding baseline characteristics stored in memory, classify,based on the comparing of the one or more characteristics with one ormore corresponding baseline characteristics, a type of the surface, andadjust, based on the classified type of the surface, an aspect of thedetermination of the relative displacement of the peripheral device oran operation of the optical sensor that alters the generating of theoptical data. Further aspects of these embodiments and additionalembodiments are described in further detail below.

In some embodiments, a surface type and corresponding surface identityfeatures can be obtained from an external source, allowing the computerperipheral device to be quickly tuned to improve movement tracking onthe particular surface type without requiring the rigorous computationsdescribed above. For instance, the surface type can be reported by thesurface itself, e.g., by a mouse pad. FIGS. 12A-12D depict variousmethods of providing a surface type and corresponding surface identityvalues via electronic communication (e.g., wired or wireless), viaencoded surface features (e.g., a QR code), via a graphical userinterface, and the like.

Typical System Environment

FIG. 1 shows an example of a computer system 100 that can include any ofa variety of host computing devices and computer peripheral devices,including peripheral devices (e.g., a computer mouse) that can beconfigured to perform aspects of the various inventive conceptsdescribed herein. Computer system 100 shows a host computing device(shown as a laptop computer) 110 and a number of peripheral devicescommunicatively coupled to and integrated with the host computingdevice, including a display device 120 and a keyboard 130. A computermouse 150 is shown on mouse pad 140 and can be communicatively coupledto host computing device 110. For computer system 100, computerperipheral device 150 can be configured to control various aspects ofcomputer 110 and monitor 120.

Although the host computing device is shown as a laptop computer, othertypes of host computing devices can be used including gaming systems,desktop computers, set top boxes, entertainment systems, a tablet or“phablet” computer, or any other suitable host computing device (e.g.,smart phone, smart wearable, or the like). In some cases, multiple hostcomputing devices may be used and one or more of the peripheral devicesmay be communicatively coupled to one or both of the host computingdevices (e.g., a mouse may be coupled to multiple host computingdevices). A host computing device may be referred to herein as a “hostcomputer,” “host device,” “host computing device,” “computing device,”“computer,” or the like, and may include a machine readable medium (notshown) configured to store computer code, such as driver software,firmware, and the like, where the computer code may be executable by oneor more processors of the host computing device(s) to control aspects ofthe host computing device via the one or more peripheral input devices.

A typical peripheral device can include any suitable input peripheraldevice, output peripheral device or input/output peripheral deviceincluding those shown (e.g., a computer mouse) and not shown (e.g., gamecontroller, remote control, wearables (e.g., gloves, watch, head mounteddisplay), AR/VR controller, stylus device, gaming pedals/shifters, orother suitable device) that can be used to convert analog inputs intodigital signals for computer processing. In some embodiments, computerperipheral device 150 can be configured to provide control signals formovement tracking (e.g., x-y movement on a planar surface,three-dimensional “in-air” movements, etc.), touch and/or gesturedetection, lift detection, orientation detection (e.g., in 3degrees-of-freedom (DOF) system, 6 DOF systems, etc.), power managementcapabilities, input detection (e.g., buttons, scroll wheels, etc.),output functions (e.g., LED control, haptic feedback, etc.), or any ofmyriad other features that can be provided by a computer peripheraldevice, as would be appreciated by one of ordinary skill in the art.

A computer peripheral device may be referred to as an “input device,”“peripheral input device,” “peripheral,” or the like. The majority ofthe embodiments described herein generally refer to computer peripheraldevice 150 as a computer mouse or similar input device, however itshould be understood that computer peripheral device 150 can be anysuitable input/output (I/O) device (e.g., user interface device, controldevice, input unit, or the like) that may be adapted to utilize thenovel embodiments described and contemplated herein.

A System For Operating a Computer Peripheral Device

FIG. 2 shows a system 200 for operating a computer peripheral device150, according to certain embodiments. System 200 may be configured tooperate any of the computer peripheral devices specifically shown or notshown herein but within the wide purview of the present disclosure.System 200 may include processor(s) 210, memory 220, a power managementsystem 230, a communication module 240, an input detection module 250,and an output control module 260. Each of the system blocks 220-260 canbe in electronic communication with processor(s) 210 (e.g., via a bussystem). System 200 may include additional functional blocks that arenot shown or discussed to prevent obfuscation of the novel featuresdescribed herein. System blocks 220-260 (also referred to as “modules”)may be implemented as separate modules, or alternatively, more than onesystem block may be implemented in a single module. In the contextdescribed herein, system 200 can be incorporated into any computerperipheral device described herein and may be configured to perform anyof the various methods of surface classification, optical sensor tuning,and the like, as described below at least with respect to FIGS. 9-13, aswould be appreciated by one of ordinary skill in the art with thebenefit of this disclosure.

In certain embodiments, processor(s) 210 may include one or moremicroprocessors and can be configured to control the operation of system200. Alternatively or additionally, processor(s) 210 may include one ormore microcontrollers (MCUs), digital signal processors (DSPs), or thelike, with supporting hardware and/or firmware (e.g., memory,programmable I/Os, etc.), and/or software, as would be appreciated byone of ordinary skill in the art. Processor(s) 210 can control some orall aspects of the operation of computer peripheral device 150 (e.g.,system block 220-260). Alternatively or additionally, some of systemblocks 220-260 may include an additional dedicated processor, which maywork in conjunction with processor(s) 210. For instance, MCUs, DSPs, andthe like, may be configured in other system blocks of system 200.Communications block 250 may include a local processor, for instance, tocontrol aspects of communication with computer 110 (e.g., via Bluetooth,Bluetooth LE, RF, IR, hardwire, ZigBee, Z-Wave, Logitech Unifying, orother communication protocol). Processor(s) 210 may be local to theperipheral device (e.g., contained therein), may be external to theperipheral device (e.g., off-board processing, such as by acorresponding host computing device), or a combination thereof.Processor(s) 210 may perform any of the various functions and methods(e.g., methods 900-1300) described and/or covered by this disclosure inconjunction with any other system blocks in system 200. In someimplementations, processor 302 of FIG. 3 may work in conjunction withprocessor 210 to perform some or all of the various methods describedthroughout this disclosure. In some embodiments, multiple processors mayenable increased performance characteristics in system 200 (e.g., speedand bandwidth), however multiple processors are not required, nornecessarily germane to the novelty of the embodiments described herein.One of ordinary skill in the art would understand the many variations,modifications, and alternative embodiments that are possible.

Memory block (“memory”) 220 can store one or more software programs tobe executed by processors (e.g., in processor(s) 210). It should beunderstood that “software” can refer to sequences of instructions that,when executed by processing unit(s) (e.g., processors, processingdevices, etc.), cause system 200 to perform certain operations ofsoftware programs. The instructions can be stored as firmware residingin read-only memory (ROM) and/or applications stored in media storagethat can be read into memory for execution by processing devices (e.g.,processor(s) 210). Software can be implemented as a single program or acollection of separate programs and can be stored in non-volatilestorage and copied in whole or in-part to volatile working memory duringprogram execution. In some embodiments, memory 220 may store datacorresponding to inputs on the peripheral device, such as a detectedmovement of the peripheral device a sensor (e.g., optical sensor,accelerometer, etc.), activation of one or more input elements (e.g.,buttons, sliders, touch-sensitive regions, etc.), or the like. Storeddata may be aggregated and send via reports to a host computing device.

In certain embodiments, memory 220 can store the various data describedthroughout this disclosure. For example, memory 220 can store and/orinclude optical data, surface characteristic profiles, dynamicallyadjustable memory pages, mouse pad product and/or surface data,classification data, look up tables for comparing and matching detectedsurface characteristics with known surface types, and more, as would beappreciated by one of ordinary skill in the art with the benefit of thisdisclosure, and as described in further detail below.

Power management system 230 can be configured to manage powerdistribution, recharging, power efficiency, haptic motor power control,and the like. In some embodiments, power management system 230 caninclude a battery (not shown), a Universal Serial Bus (USB)-basedrecharging system for the battery (not shown), and power managementdevices (e.g., voltage regulators—not shown), and a power grid withinsystem 200 to provide power to each subsystem (e.g., communicationsblock 240, etc.). In certain embodiments, the functions provided bypower management system 230 may be incorporated into processor(s) 210.Alternatively, some embodiments may not include a dedicated powermanagement block. For example, functional aspects of power managementblock 240 may be subsumed by another block (e.g., processor(s) 210) orin combination therewith. The power source can be a replaceable battery,a rechargeable energy storage device (e.g., super capacitor, LithiumPolymer Battery, NiMH, NiCd), or a corded power supply. The rechargingsystem can be an additional cable (specific for the recharging purpose)or it can use a USB connection to recharge the battery.

Communication system 240 can be configured to enable wirelesscommunication with a corresponding host computing device (e.g., 110), orother devices and/or peripherals, according to certain embodiments.Communication system 240 can be configured to provide radio-frequency(RF), Bluetooth®, Logitech proprietary communication protocol (e.g.,Unifying, Gaming Light Speed, or others), infra-red (IR), ZigBee®,Z-Wave, or other suitable communication technology to communicate withother computing devices and/or peripheral devices. System 200 mayoptionally comprise a hardwired connection to the corresponding hostcomputing device. For example, computer peripheral device 130 can beconfigured to receive a USB, FireWire®, Thunderbolt®, or otheruniversal-type cable to enable bi-directional electronic communicationwith the corresponding host computing device or other external devices.Some embodiments may utilize different types of cables or connectionprotocol standards to establish hardwired communication with otherentities. In some aspects, communication ports (e.g., USB), power ports,etc., may be considered as part of other blocks described herein (e.g.,input detection module 150, output control modules 260, etc.). In someaspects, communication system 240 can send reports generated by theprocessor(s) 210 (e.g., HID data, streaming or aggregated data, etc.) toa host computing device. In some cases, the reports can be generated bythe processor(s) only, in conjunction with the processor(s), or otherentity in system 200. Communication system 240 may incorporate one ormore antennas, oscillators, etc., and may operate at any suitablefrequency band (e.g., 2.4 Ghz), etc. One of ordinary skill in the artwith the benefit of this disclosure would appreciate the manymodifications, variations, and alternative embodiments thereof

Input detection module 250 can control the detection of auser-interaction with input elements (also referred to as “inputmembers” or “members”) on computer peripheral device 150. For instance,input detection module 250 can detect user inputs from motion sensors,keys, buttons, roller wheels, scroll wheels, track balls, touch pads(e.g., one and/or two-dimensional touch sensitive touch pads), clickwheels, dials, keypads, microphones, GUIs, touch-sensitive GUIs, imagesensor based detection such as gesture detection (e.g., via webcam),audio based detection such as voice input (e.g., via microphone), or thelike, as would be appreciated by one of ordinary skill in the art withthe benefit of this disclosure. Alternatively, the functions of inputdetection module 250 can be subsumed by processor 210, or in combinationtherewith.

In some embodiments, input detection module 250 can detect a touch ortouch gesture on one or more touch sensitive surfaces on input device130. Input detection block 250 can include one or more touch sensitivesurfaces or touch sensors. Touch sensors generally comprise sensingelements suitable to detect a signal such as direct contact,electromagnetic or electrostatic fields, or a beam of electromagneticradiation. Touch sensors can typically detect changes in a receivedsignal, the presence of a signal, or the absence of a signal. A touchsensor may include a source for emitting the detected signal, or thesignal may be generated by a secondary source. Touch sensors may beconfigured to detect the presence of an object at a distance from areference zone or point (e.g., <5 mm), contact with a reference zone orpoint, or a combination thereof. Certain embodiments of computerperipheral device 150 may or may not utilize touch detection or touchsensing capabilities.

Input detection block 250 can include touch and/or proximity sensingcapabilities. Some examples of the types of touch/proximity sensors mayinclude, but are not limited to, resistive sensors (e.g., standardair-gap 4-wire based, based on carbon loaded plastics which havedifferent electrical characteristics depending on the pressure (FSR),interpolated FSR, etc.), capacitive sensors (e.g., surface capacitance,self-capacitance, mutual capacitance, etc.), optical sensors (e.g.,infrared light barriers matrix, laser based diode coupled withphoto-detectors that could measure the time of flight of the light path,etc.), acoustic sensors (e.g., piezo-buzzer coupled with microphones todetect the modification of a wave propagation pattern related to touchpoints, etc.), or the like.

Input detection module 250 may include a movement tracking sub-blockthat can be configured to detect a relative displacement (movementtracking) of the computer peripheral device 150. For example, inputdetection module 250 optical sensor(s) such as IR LEDs and an imagingarray of photodiodes to detect a movement of computer peripheral device150 relative to an underlying surface. Computer peripheral device 150may optionally include movement tracking hardware that utilizes coherent(laser) light. In certain embodiments, an optical sensor is disposed onthe bottom side of computer peripheral device 150, as shown in FIG. 4B.The movement tracking block can provide positional data (e.g., delta Xand delta Y data from last sampling) or lift detection data. Forexample, an optical sensor can detect when a user lifts computerperipheral device 150 off of a work surface and can send that data toprocessor 210 for further processing. In some embodiments, processor210, the movement tracking block (which may include an additionaldedicated processor), or a combination thereof may perform some or allof the novel functions described herein, such as the tracking of therelative displacement of computer peripheral device 150 along anunderlying surface.

In certain embodiments, accelerometers can be used for movementdetection. Accelerometers can be electromechanical devices (e.g.,micro-electromechanical systems (MEMS) devices) configured to measureacceleration forces (e.g., static and dynamic forces). One or moreaccelerometers can be used to detect three dimensional (3D) positioning.For example, 3D tracking can utilize a three-axis accelerometer or twotwo-axis accelerometers (e.g., in a “3D air mouse.” Accelerometers canfurther determine if computer peripheral device 150 has been lifted offof a surface and provide movement data that may include the velocity,physical orientation, and acceleration of computer peripheral device150. In some embodiments, gyroscope(s) can be used in lieu of or inconjunction with accelerometer(s) to determine movement or input deviceorientation.

In some embodiments, output control module 260 can control variousoutputs for a corresponding computer peripheral device. For instance,output control module 260 may control a number of visual output elements(e.g., mouse cursor, LEDs, LCDs), displays, audio outputs (e.g.,speakers), haptic output systems, or the like. One of ordinary skill inthe art with the benefit of this disclosure would appreciate the manymodifications, variations, and alternative embodiments thereof.

Although certain systems may not be expressly discussed, they should beconsidered as part of system 200, as would be understood by one ofordinary skill in the art. For example, system 200 may include a bussystem to transfer power and/or data to and from the different systemstherein.

It should be appreciated that system 200 is illustrative and thatvariations and modifications are possible. System 200 can have othercapabilities not specifically described herein. Further, while system200 is described with reference to particular blocks, it is to beunderstood that these blocks are defined for convenience of descriptionand are not intended to imply a particular physical arrangement ofcomponent parts. Further, the blocks need not correspond to physicallydistinct components. Blocks can be configured to perform variousoperations, e.g., by programming a processor or providing appropriatecontrol circuitry, and various blocks might or might not bereconfigurable depending on how the initial configuration is obtained.

Embodiments of the present invention can be realized in a variety ofapparatuses including electronic devices (e.g., peripheral devices)implemented using any combination of circuitry and software.Furthermore, aspects and/or portions of system 200 may be combined withor operated by other sub-systems as required by design. For example,input detection module 250 and/or memory 220 may operate withinprocessor(s) 210 instead of functioning as a separate entity. Inaddition, the inventive concepts described herein can also be applied toany peripheral device. Further, system 200 can be applied to any of thecomputer peripheral devices described in the embodiments herein, whetherexplicitly, referentially, or tacitly described (e.g., would have beenknown to be applicable to a particular computer peripheral device by oneof ordinary skill in the art). The foregoing embodiments are notintended to be limiting and those of ordinary skill in the art with thebenefit of this disclosure would appreciate the myriad applications andpossibilities.

Although certain systems may not expressly discussed, they should beconsidered as part of system 200, as would be understood by one ofordinary skill in the art. For example, system 200 may include a bussystem to transfer power and/or data to and from the different systemstherein. In some embodiments, system 200 may include a storage subsystem(not shown). A storage subsystem can store one or more software programsto be executed by processors (e.g., in processor(s) 210). It should beunderstood that “software” can refer to sequences of instructions that,when executed by processing unit(s) (e.g., processors, processingdevices, etc.), cause system 200 to perform certain operations ofsoftware programs. The instructions can be stored as firmware residingin read only memory (ROM) and/or applications stored in media storagethat can be read into memory for processing by processing devices.Software can be implemented as a single program or a collection ofseparate programs and can be stored in non-volatile storage and copiedin whole or in-part to volatile working memory during program execution.From a storage subsystem, processing devices can retrieve programinstructions to execute in order to execute various operations (e.g.,software-controlled spring auto-adjustment, etc.) as described herein.

It should be appreciated that system 200 is meant to be illustrative andthat many variations and modifications are possible, as would beappreciated by one of ordinary skill in the art. System 200 can includeother functions or capabilities that are not specifically described here(e.g., mobile phone, global positioning system (GPS), power management,one or more cameras, various connection ports for connecting externaldevices or accessories, etc.). While system 200 is described withreference to particular blocks (e.g., input detection block 250), it isto be understood that these blocks are defined for understanding certainembodiments of the invention and is not intended to imply thatembodiments are limited to a particular physical arrangement ofcomponent parts. The individual blocks need not correspond to physicallydistinct components. Blocks can be configured to perform variousoperations, e.g., by programming a processor or providing appropriateprocesses, and various blocks may or may not be reconfigurable dependingon how the initial configuration is obtained. Certain embodiments can berealized in a variety of apparatuses including electronic devicesimplemented using any combination of circuitry and software.Furthermore, aspects and/or portions of system 200 may be combined withor operated by other sub-systems as informed by design. For example,power management block 230 and/or input detection block 250 may beintegrated with processor(s) 210 instead of functioning as a separateentity.

System For Operating a Host Computing Device

FIG. 3 is a simplified block diagram of a computing device 300,according to certain embodiments. Computing device 300 can implementsome or all functions, behaviors, and/or capabilities described abovethat would use electronic storage or processing, as well as otherfunctions, behaviors, or capabilities not expressly described. Computingdevice 300 includes a processing subsystem (processor(s)) 302, a storagesubsystem 306, user interfaces 314, 316, and a communication interface312. Computing device 300 can also include other components (notexplicitly shown) such as a battery, power controllers, and othercomponents operable to provide various enhanced capabilities. In variousembodiments, computing device 300 can be implemented in a host computingdevice, such as a desktop or laptop computer (e.g., laptop 110), mobiledevice (e.g., tablet computer, smart phone, mobile phone), wearabledevice, media device, or the like, in peripheral devices (e.g.,keyboards, etc.) in certain implementations.

Processor(s) 302 can include MCU(s), micro-processors, applicationspecific integrated circuits (ASICs), digital signal processors (DSPs),digital signal processing devices (DSPDs), programmable logic devices(PLDs), field programmable gate arrays (FPGAs), processors, controllers,micro-controllers, microprocessors, or electronic units designed toperform a function or combination of methods, functions, etc., describedthroughout this disclosure.

Storage subsystem 306 can be implemented using a local storage and/orremovable storage medium, e.g., using disk, flash memory (e.g., securedigital card, universal serial bus flash drive), or any othernon-transitory storage medium, or a combination of media, and caninclude volatile and/or non-volatile storage media. Local storage caninclude a memory subsystem 308 including random access memory (RAM) 318such as dynamic RAM (DRAM), static RAM (SRAM), synchronous dynamic RAM(e.g., DDR), or battery backed up RAM or read-only memory (ROM) 320, ora file storage subsystem 310 that may include one or more code modules.In some embodiments, storage subsystem 306 can store one or moreapplications and/or operating system programs to be executed byprocessing subsystem 302, including programs to implement some or alloperations described above that would be performed using a computer. Forexample, storage subsystem 306 can store one or more code modules forimplementing one or more method steps described herein.

A firmware and/or software implementation may be implemented withmodules (e.g., procedures, functions, and so on). A machine-readablemedium tangibly embodying instructions may be used in implementingmethodologies described herein. Code modules (e.g., instructions storedin memory) may be implemented within a processor or external to theprocessor. As used herein, the term “memory” refers to a type of longterm, short term, volatile, nonvolatile, or other storage medium and isnot to be limited to any particular type of memory or number of memoriesor type of media upon which memory is stored.

Moreover, the term “storage medium” or “storage device” may representone or more memories for storing data, including read only memory (ROM),RAM, magnetic RAM, core memory, magnetic disk storage mediums, opticalstorage mediums, flash memory devices and/or other machine readablemediums for storing information. The term “machine-readable medium”includes, but is not limited to, portable or fixed storage devices,optical storage devices, wireless channels, and/or various other storagemediums capable of storing instruction(s) and/or data.

Furthermore, embodiments may be implemented by hardware, software,scripting languages, firmware, middleware, microcode, hardwaredescription languages, and/or any combination thereof. When implementedin software, firmware, middleware, scripting language, and/or microcode,program code or code segments to perform tasks may be stored in amachine readable medium such as a storage medium. A code segment (e.g.,code module) or machine-executable instruction may represent aprocedure, a function, a subprogram, a program, a routine, a subroutine,a module, a software package, a script, a class, or a combination ofinstructions, data structures, and/or program statements. A code segmentmay be coupled to another code segment or a hardware circuit by passingand/or receiving information, data, arguments, parameters, and/or memorycontents. Information, arguments, parameters, data, etc. may be passed,forwarded, or transmitted by suitable means including memory sharing,message passing, token passing, network transmission, etc. Thesedescriptions of software, firmware, storage mediums, etc., apply tosystems 200 and 300, as well as any other implementations within thewide purview of the present disclosure. In some embodiments, aspects ofthe invention (e.g., surface classification) may be performed bysoftware stored in storage subsystem 306, stored in memory 220 ofcomputer peripheral device 250, or both. One of ordinary skill in theart with the benefit of this disclosure would appreciate the manymodifications, variations, and alternative embodiments thereof.

Implementation of the techniques, blocks, steps and means describedthroughout the present disclosure may be done in various ways. Forexample, these techniques, blocks, steps and means may be implemented inhardware, software, or a combination thereof. For a hardwareimplementation, the processing units may be implemented within one ormore ASICs, DSPs, DSPDs, PLDs, FPGAs, processors, controllers,micro-controllers, microprocessors, other electronic units designed toperform the functions described above, and/or a combination thereof.

Each code module may comprise sets of instructions (codes) embodied on acomputer-readable medium that directs a processor of a computing device110 to perform corresponding actions. The instructions may be configuredto run in sequential order, in parallel (such as under differentprocessing threads), or in a combination thereof. After loading a codemodule on a general purpose computer system, the general purposecomputer is transformed into a special purpose computer system.

Computer programs incorporating various features described herein (e.g.,in one or more code modules) may be encoded and stored on variouscomputer readable storage media. Computer readable media encoded withthe program code may be packaged with a compatible electronic device, orthe program code may be provided separately from electronic devices(e.g., via Internet download or as a separately packaged computerreadable storage medium). Storage subsystem 306 can also storeinformation useful for establishing network connections using thecommunication interface 312.

Computer system 300 may include user interface input devices 314elements (e.g., touch pad, touch screen, scroll wheel, click wheel,dial, button, switch, keypad, microphone, etc.), as well as userinterface output devices 316 (e.g., video screen, indicator lights,speakers, headphone jacks, virtual- or augmented-reality display, etc.),together with supporting electronics (e.g., digital to analog or analogto digital converters, signal processors, etc.). A user can operateinput devices of user interface 314 to invoke the functionality ofcomputing device 300 and can view and/or hear output from computingdevice 300 via output devices of user interface 316.

Processing subsystem 302 can be implemented as one or more processors(e.g., integrated circuits, one or more single core or multi coremicroprocessors, microcontrollers, central processing unit, graphicsprocessing unit, etc.). In operation, processing subsystem 302 cancontrol the operation of computing device 300. In some embodiments,processing subsystem 302 can execute a variety of programs in responseto program code and can maintain multiple concurrently executingprograms or processes. At a given time, some or all of a program code tobe executed can reside in processing subsystem 302 and/or in storagemedia, such as storage subsystem 304. Through programming, processingsubsystem 302 can provide various functionality for computing device300. Processing subsystem 302 can also execute other programs to controlother functions of computing device 300, including programs that may bestored in storage subsystem 304.

Communication interface (also referred to as network interface) 312 canprovide voice and/or data communication capability for computing device300. In some embodiments, communication interface 312 can include radiofrequency (RF) transceiver components for accessing wireless datanetworks (e.g., Wi-Fi network; 3G, 4G/LTE; etc.), mobile communicationtechnologies, components for short range wireless communication (e.g.,using Bluetooth communication standards, NFC, etc.), other components,or combinations of technologies. In some embodiments, communicationinterface 312 can provide wired connectivity (e.g., universal serial bus(USB), Ethernet, universal asynchronous receiver/transmitter, etc.) inaddition to, or in lieu of, a wireless interface. Communicationinterface 312 can be implemented using a combination of hardware (e.g.,driver circuits, antennas, modulators/demodulators, encoders/decoders,and other analog and/or digital signal processing circuits) and softwarecomponents. In some embodiments, communication interface 312 can supportmultiple communication channels concurrently.

User interface input devices 314 may include any suitable computerperipheral device (e.g., computer mouse, keyboard, gaming controller,remote control, stylus device, etc.), as would be appreciated by one ofordinary skill in the art with the benefit of this disclosure. Userinterface output devices 316 can include display devices (e.g., amonitor, television, projection device, etc.), audio devices (e.g.,speakers, microphones), haptic devices, etc. Note that user interfaceinput and output devices are shown to be a part of system 300 as anintegrated system. In some cases, such as in laptop computers, this maybe the case as keyboards and input elements as well as a display andoutput elements are integrated on the same host computing device. Insome cases, the input and output devices may be separate from system300, as shown in FIG. 1. One of ordinary skill in the art with thebenefit of this disclosure would appreciate the many modifications,variations, and alternative embodiments thereof.

It will be appreciated that computing device 300 is illustrative andthat variations and modifications are possible. A host computing devicecan have various functionality not specifically described (e.g., voicecommunication via cellular telephone networks) and can includecomponents appropriate to such functionality. While the computing device300 is described with reference to particular blocks, it is to beunderstood that these blocks are defined for convenience of descriptionand are not intended to imply a particular physical arrangement ofcomponent parts. For example, processing subsystem 302, storagesubsystem 306, user interfaces 314, 316, and communications interface312 can be in one device or distributed among multiple devices. Further,the blocks need not correspond to physically distinct components. Blockscan be configured to perform various operations, e.g., by programming aprocessor or providing appropriate control circuitry, and various blocksmight or might not be reconfigurable depending on how an initialconfiguration is obtained. Embodiments of the present invention can berealized in a variety of apparatus including electronic devicesimplemented using a combination of circuitry and software. Hostcomputing devices or even peripheral devices described herein can beimplemented using system 300.

Examples of Features For Certain Embodiments of a Computer PeripheralDevice

FIG. 4A shows aspects of a computer peripheral device 400, according tocertain embodiments. Computer peripheral device 400 can include housing410 (e.g., the “shell,” “chassis,” or “body” of the computer peripheraldevice), left button 420, right button 430, scroll wheel 440 and buttons450, 460, as well as any other suitable input elements (e.g., additionalbuttons, side scroll wheels, touch sensors, etc.) or output elements(e.g., light emitting diodes (LEDs), displays, haptic feedback elements,speakers, etc.), and the like. In some cases, button 450 may be a modeselection button. For example, button 450 may be depressed to manuallyindicate that the computer peripheral device is being used on adifferent surface type. For instance, depressing button 450 may cyclethrough a series of surface types including gaming mouse pad, standardmouse pad, wood surface, metal surface, glass surface, etc.Alternatively or additionally, other modes of operation are possiblewith different performance characteristics, as would be understood byone of ordinary skill in the art. Computer peripheral device 400 may becomputer mouse 150.

In some embodiments, buttons 450, 460 may be configured to switchcommunication between host computing devices. For instance, someembodiments may have multi-host connectivity such that computerperipheral device 400 may communication with a first host computer(e.g., a PC laptop) and switch to a second host computer (e.g., a Maccomputer) in response to a corresponding button press, as furtherdescribed in patent application Ser. No. 14/884,381, which isincorporated by reference in its entirety for all purposes.Alternatively or additionally, switching between hosts may be achievedby, for example, moving a corresponding cursor to an edge of a displayin a “flow” enabled system, as further described in patent applicationSer. No. 15/226,770 which is incorporated by reference in its entiretyfor all purposes. Buttons 450, 460 or any other computer peripheraldevices can be configured in any suitable manner and may utilize anysuitable function, which can be pre-set or user programmed (e.g., viacorresponding driver software on a host computing device), as would beunderstood by one of ordinary skill in the art.

FIG. 4B shows aspects of a bottom portion of computer peripheral device400, according to certain embodiments. The bottom of computer peripheraldevice 400 can include one or more feet 470, an image sensor 480 (e.g.,CMOS sensor using an IR LED lamp), and a power switch 485. Additionalinput elements (e.g., buttons, sliders, etc.) may be included. In somecases, power switch 485 may be located elsewhere on the mouse or may notbe included at all (e.g., computer peripheral device 400 may powerup/power down based on usage). Button 495 may be a mode selection switch(e.g., switch for selecting a first mode of operation or a second modeof operation), a multi-host computer selection button, or the like. Insome embodiments, button 495 may be a communication protocol selectionbutton. For example, pressing button 495 may switch between aproprietary high-frame rate communication protocol or a lower powerlower frame rate communication protocol (e.g., Bluetooth® LE). One ofordinary skill in the art with the benefit of this disclosure wouldunderstand the many variations, modifications, and alternativeembodiments thereof.

In preferred embodiments, image sensor 480 is typically located near thecenter of the bottom portion of computer peripheral device 400, asshown. Image sensor 480 can be a single sensor, but can operate in oneor multiple modes of operation (e.g., surface tracking, changingoperating parameters to adapt to particular surface types andcorresponding surface classifications, as further described below),according to certain embodiments. An image sensor can be a complementarymetal-oxide semiconductor (CMOS) sensor that captures images of theunderlying surface and sends each image to a processor (e.g., processor210, on-board processing on the sensor, etc., to perform imagecorrelation and displacement calculations, etc.) for analysis. Othertypes of image sensors may be used, including charge-coupled devices(CCD), N-type metal-oxide-semiconductors (NMOS), hybrid devices (e.g.,CCD/CMOS), or the like, as would be understood by one of ordinary skillin the art. The processor can detect patterns in the images and see howthose patterns have moved since the previous image, and based on changesin the patterns over a sequence of images, the processor can determinehow far and what direction the corresponding computer peripheral devicehas moved, which can be sent to the host computer to control one or morefunctions (e.g., control a cursor on a display, control an audio volumein a music application, etc.). This process can occur many hundreds ifnot thousands of times per second to accurately detect movement of alltypes including a range of movement speeds and accelerations.

To illustrate some basic operational fundamentals of opticalsensor-based computer peripheral devices (e.g., optical computer mice150, 400), frame rates and memory slots are briefly described here, asthey are some of the performance characteristics (among others) of acomputer peripheral device that can be adjusted and optimized for aparticular classified surface type, as further described below. In anoptical sensor-based computer peripheral device, a “frame rate” candefine a frequency at which the image sensor takes images of anunderlying surface. Generally, quick movements (e.g., 20 ips ormore—typical in a competitive gaming setting) with the computerperipheral device may preferably be detected using a fast frame rate(e.g., 5 kHz or more) to fully capture the movement with accuracy (e.g.,how close the measurement is to the actual movement speed and/oracceleration) and precision (e.g., how repeatable an identicalmeasurement is). Likewise, slow movements (e.g., 1-5 ips—typical withproductivity software) with the computer peripheral device may beadequately detected with a slower frame rate (e.g., 1 kHz), while stillachieving accuracy and precision. Higher frame rates tend to cause thecomputer peripheral device (e.g., system 200) to consume more power thando lower frame rates. In some cases, surface conditions can also affectpower consumption. For example, surfaces with a high density of surfacefeatures (e.g., a gaming mouse pad) may be easier to track movement onas compared to surfaces with few surface features because there are morepoints of reference for detecting movement. Thus, a computer peripheraldevice operating on a surface with a low density of surface features(e.g., glass, monochromatic metal surfaces, etc.) may use more lightintensity and/or a higher frame rate for a particular movement and/oracceleration than the computer peripheral device operating on a surfacewith a high density of surface features under the same movement andacceleration conditions.

In certain embodiments, a number of memory slots may be used tocorrelate movement of the input device with respect to the underlyingsurface. Memory slots can be used to store images taken by a pixel arrayin an optical sensor. Computer peripheral device 400 can use a number ofmemory slots to save successive image sensor images that are used todetect movement of input device 400 along an underlying surface (e.g.,using input detection module 250). At minimum, two memory slots areneeded to correlate movement. For instance, a first page (saved to afirst memory slot) may include a surface feature or particle and asecond page (saved to a second memory slot) may include the same surfacefeature or particle, but captured at a difference time wherein, ifcomputer peripheral device 400 is moved, the same surface feature orparticle will be located a distance from the position shown in the firstpage. Note that a “page” can be referred to as an “image” for purposesof this disclosure. The detected difference of location is used tointerpolate a movement of the input device with respect to theunderlying surface, as would be understood by one of ordinary skill inthe art. “Memory slots” may be interchangeably referred to as “memoryblocks,” (not to be confused with memory “block” 220) “memory pages,”“memory cells,” and the like. The memory slots may be part of and/orcontrolled by processor 210, input detection module 250, or acombination thereof. In some cases, memory slots may be stored onexternal memory (e.g., external to processor 210 and/or movementtracking block 230) and controlled by one or more resources of system200. In certain embodiments, the memory slots are stored on the imagesensor silicon and may be controlled by image sensor 480, processor 210,or a combination thereof. In some cases, the image sensor can besubsumed, wholly or in part, by input detection module 250. One ofordinary skill in the art would understand the many variations,modifications, and alternative embodiments thereof.

Additional memory slots may be used to better correlate movement forimproved accuracy. For example, some images may include noise or otherinterference. In such cases, having an additional memory slot to capturean earlier image may be useful as it can provide another set of datapoints to correlate a detected movement. Generally, more memory slotscan provide better correlation and thus improved accuracy. However,having additional memory slots (e.g., 3 or more) typically requiresadditional computational resources as more data (additional memorypages) are analyzed and correlated with the other memory pages. Higherperformance settings can typically benefit more from additional memorypages as they can further support the accurate detection of fastmovements and/or accelerations of the input device. In some exemplaryembodiments, computer peripheral device 400 can include four or morememory slots when placed in the a high performance mode of operation.However, more or fewer memory slots may be used, as would be understoodby one of ordinary skill in the art. Furthermore, the number of memoryslots used may depend on a detected surface type, as further describedbelow. For example, fewer memory slots may be needed when a detectedsurface type is a mouse pad, as they typically include a high density ofsurface features with good surface brightness and surface contrast andis thus easier to track relative motion of the computer peripheraldevice along the surface. More memory slots may still be used forenhanced performance conditions. Conversely, surfaces with a low densityof features with poor surface brightness and surface contrast mayrequire more memory slots to allow for more opportunities forcorrelation.

In certain embodiments, memory slots may be integrated with the opticalsensor itself, or may be realized in any combination of memory stored atthe optical sensor (e.g., memory slots, on-board flash memory, etc.),memory block 220, memory subsystem 308, or any combination thereof. Insome embodiments, the memory slots can store surface identity vectors(e.g., physical properties of the surface, also referred to ascharacteristics), such as a reference image of the surface, wovenpatterns, feature spatial frequency pitch, surface feature shape andarrangement, and more, as well as real-time estimators of these surfaceproperties to validate that the sensor is still being used on what theysystem considers the current surface in use. These memory slots canoperate to speed-up surface recognition and responsiveness of the sensorparameter tuning. A non-exhaustive lift of surface properties discussedthroughout the present disclosure may include brightness, contrast,features density, mean size of features, feature size standarddeviation, temporal variation of brightness, temporal variation ofcontrast, temporal variation of a number of features, peak gradient(e.g., first derivative, edge), peak Laplacian (e.g., second derivative,peaks and dips), pattern repetitiveness, amount of line features,illumination of spot center, shape of illumination roll-off, and more,as would be appreciated by one of ordinary skill in the art with thebenefit of this disclosure.

Surface Classification and Tuning an Optical Sensor For ImprovingSurface Tracking

The systems and methods of surface classification described herein allowfor a significantly improved computer peripheral device displacementtracking performance over a wide variety of surfaces. At a high level ofdescription, surfaces can be classified based on a number ofcharacteristics including surface brightness, surface contrast, and adensity of surface features. Based on verified sets of surfacecharacteristics, optical sensor operational parameters can be adjustedand tuned for improved matching, or in some cases ideal matching, with adetected surface classification (the surface type). This presents aclear technical advantage over existing designs having fixed opticalsensor parametric settings configured to accommodate worst case trackingscenarios in order to ensure that the optical sensor will be capable oftracking at a baseline accuracy level over both good surface types(e.g., high brightness, contrast, and density of surface features) andpoor surface types (e.g., low brightness, contrast, and density ofsurface features. However, these types of design tradeoffs will resultin sensor configurations that are sub-optimal on surfaces with highquality features (e.g., gaming mouse pads), which will prevent the userfrom benefiting from an improved match of the sensor configuration withthe detected surface type that can result in a markedly improvedtracking performance, in addition to performance enhancements in liftoff detection (e.g., the sensor has prior information the surfacecharacteristics of the surface and can adapt lift detection algorithmsaccordingly), and power consumption (e.g., less inefficiency due totrade-off sensor parametric settings).

In some embodiments, the determination of surface characteristics andthe adjustment of the operational parameters of the optical sensor canbe an automated process (e.g., see FIGS. 9-10), or it can be triggeredby a user action (e.g., user presses a button on the computer peripheraldevice or selects a surface type on a graphical user interface).

Surface Types and Characteristics

As indicated above, there are a variety of common surface types thatusers tend to use when operating a computer peripheral device such as acomputer mouse. Some common surfaces may include various types of mousepads, tables, desks, arm rests, stationary (e.g., folders), books, orthe like, with each having any of an array of different materials,textures, coatings, etc. Each type of surface can have different surfacecharacteristics, including a surface brightness (e.g., darkness versusbrightness), surface contrast (e.g., diffuse versus specular), and adensity of surface features. Surface features may include patterns,surface feature spatial frequency pitch, surface feature shape andarrangement, or the like. Some non-limiting examples of surface typesand their corresponding surface characteristics are discussed at leastwith respect to FIGS. 5-8. Some aspects of surface brightness andsurface contrast are presented below.

Any suitable method may be used to determine a surface brightness of asurface. In some embodiments, surface brightness can be estimated basedon an LED Current (ILED) and the Integration Time (IT) for the imagesensor circuit. The Radiant Intensity (W/sr) of the LED can be estimatedbased on the value of the LED current set by either a sensor register,external circuitry, or chosen resistor. The Irradiance Flux Density(W/m2) on the surface (e.g., mouse pad) can also be estimated based onthe value of the LED Current register, LED efficiency, and the sensorgeometry, for example. The Radiosity (W/m2) leaving the surface isdependent on the Surface Brightness and can be inversely related to theIntegration Time of the sensor. Therefore, the Surface Brightness can beestimated as a function of the LED Current (ILED) and the IntegrationTime (IT). In an example embodiment, ILED may be between 0.5 mA and 56mA, and IT may be between 5 μs-512 μs, although other ranges arepossible. This is one particular method of estimating the surfacebrightness of a surface. Other methods of estimating a surfacebrightness may be used, as would be appreciated by one of ordinary skillin the art with the benefit of this disclosure.

Any suitable method may be used to determine a surface contrast of asurface. In some embodiments, the contrast could be estimated usingimage dump. In further embodiments, a Tri-State Threshold (TST)parameter can be used. During the computation of X and Y edge maps, theTST can be used to remove pixels from edge maps that do not have astrong enough gradient. On surfaces with a high contrast, increasing theTST value may not significantly affect the number of edge pixels in theedge maps. On surfaces with a low contrast, increasing the TST value mayreduce the number edge pixels in the edge maps rapidly. Thus, changingthe TST value and comparing the number of edges before and after cangive relevant information regarding the surface contrast, as would beappreciated by one of ordinary skill in the art with the benefit of thisdisclosure. In some aspects, measuring the level of surface imagegradient (e.g., 1st derivative) and/or the level of surface imageLaplacian (e.g., 2nd derivative) can also be used to determine thesurface contrast.

Typically, surface brightness information can be used to classify asurface, however in some embodiments the surface brightness may not beused in tuning sensor parameters as it is already considered in thesensor feedback loop at the silicon level (e.g., ILED and IT). Thesurface contrast is typically used to determine if a surface can haverobust tracking, and sensor parameter tuning is often based solely onthe surface contrast alone, however some embodiments may employ othersurface characteristics for parameter tuning. However, the surfacebrightness can help determine if the surface has changed or not, asfurther discussed below. In certain embodiments, any number of surfaceproperties can be used in the process. In exemplary embodiments, anorder of importance may include contrast, feature density, features size(e.g., mean and standard deviation), brightness, and temporal variation,however it would be understood by one of ordinary skill in the art thatany order and combination is possible.

FIG. 5 shows a computer peripheral device 400 operating on a mouse pad510, according to certain embodiments. Mouse pads typically haveexcellent surface characteristics including high surface contrast and ahigh number (e.g., density) of surface features, as summarized in Table800 of FIG. 8 that shows various properties of surfaces that can affectmovement tracking accuracy for a computer peripheral device. FIG. 5includes a zoomed portion of mouse pad 510 that shows a dense, repeatingpattern of cells with nearly ideal surface characteristics. Computerperipheral device 400 may be tuned to these surface characteristics forvery high performance tracking, as further described below.

Mouse pads are typically made of low density rubber composites (e.g.,open-cell styrene, butadiene rubber, styrene-butadiene rubber, etc.)with a fabric coupled to the upper surface of the rubber composite.However, other types of material can be used for both the body orsurface including various fabrics, plastics, recycled rubber tires,neoprene, silicone rubber, leather, glass, cork, wood, aluminum, stone,stainless steel, or the like, with each having their own particularsurface characteristics. Some of the best mouse pads are often gamingmats, which are typically comprised of plastic, textured glass (withgood surface characteristics), aluminum, or carbon fiber.

FIG. 6 shows computer peripheral device 400 operating on a desk 610 witha plain surface, according to certain embodiments. Desk surfaces mayoften have low surface contrast and a medium number of surface features,as summarized in Table 800. FIG. 6 includes a zoomed portion of desk 610that shows a moderately dense, random pattern of surface features (e.g.,imperfections, etc.) with medium quality surface characteristics.Computer peripheral device 400 may be tuned to these surfacecharacteristics for improved tracking on this particular type ofsurface, as further described below.

FIG. 7 shows computer peripheral device 400 operating on a glass table710, according to certain embodiments. Glass surfaces may often have avery low surface contrast and a very low number of surface features, assummarized in Table 800. FIG. 7 includes a zoomed portion of table 710that shows a sparsely distributed, random pattern of surface features(e.g., specks, microscopic debris, etc.) with very low quality surfacecharacteristics. Computer peripheral device 400 may be tuned to thesesurface characteristics, despite the low quality, to achieve improvedtracking performance, as further described below.

FIG. 9 is a simplified flow chart showing aspects of a method 900 forimproving computer peripheral device tracking accuracy on a work surfaceusing surface classification and sensor tuning, according to certainembodiments. Method 900 can be performed by processing logic that maycomprise hardware (circuitry, dedicated logic, etc.), software operatingon appropriate hardware (such as a general purpose computing system or adedicated machine), firmware (embedded software), or any combinationthereof. In certain embodiments, method 900 can be performed by aspectsof processor(s) 210, memory 220, input detection module 250 (e.g.,controlling aspects of optical sensor 480), or any combination thereof.

At operation 910, method 900 can include activating computer peripheraldevice 400, according to certain embodiments. Activation can includeturning on from an off state or from a sleep mode, transitioning from alifted mode to a non-lifted mode, or the like. Any suitable method ofactivation may be used, which typically occurs when the computerperipheral device is ready to begin tracking its displacement along asurface.

At operation 920, method 900 can include analyzing one or more surfaceimages to identify the surface type of an underlying surface, accordingto certain embodiments. For instance, processor(s) 220 can run a surfaceclassifier program to analyze one or more images and/or edge maps of thesurface to determine the surface type. Optical sensor 480 can generatethe optical data (e.g., the one or more surface images) corresponding tothe surface that the computer peripheral device is placed upon.

At operation 930, method 900 can include computing a set of identityvalues (the surface identity vector) that characterizes physicalproperties of the surface, according to certain embodiments. Each of theset of surface identity values can also be referred to as“characteristics” or “properties” of the surface. Some of the physicalproperties of the surface can include a surface brightness, a surfacecontrast, and a number of surface features, among other characteristics(e.g., frequency of pixel voltage distribution such as a histogramrevealing “trackability” of a surface, etc.). A more extensive,non-exhaustive list is described above.

At operation 940, method 900 can include storing the surface identityvector in memory, according to certain embodiments. In some cases, thecomputer peripheral device could store a reference image and/or edge mapof the current surface in memory 220 and/or on-board memory of opticalsensor 480.

At operation 950, method 900 can include tuning and storing sensortracking parameters for improved tracking on the computed surface type(defined by the surface identity vector), according to certainembodiments. The sensor tracking parameters are tuned and stored inorder to operate in a known operating condition. For example, the sensortracking parameters of the optical sensor are tuned to improve (in somecases optimize) relative displacement tracking on the particular surfacebased on the surface identity vector. The optimized settings can bestored as “profiles” so that when the same surface is encountered in thefuture, the corresponding profile can quickly and automatically tune theoptical sensor without running a computationally expensive tuningprocess. Some of the sensor tracking parameters include LED current,pixel integration time, pixel noise filtering threshold, flash rate,flash strategy, correlation threshold, correlation strategy, choice ofsub-pixel computation methodology, lift-detection algorithm (e.g., fordetecting when the mouse has been physically lifted or tilted from anunderlying surface such that there is a larger air gap between the two.In response, the mouse may stop tracking or adjust its tracking toaccount for the increased distance.), lift detection threshold,dots-per-inch (DPI) fine tuning, and the like.

At operation 960, method 900 can include analyzing new surface images,according to certain embodiments. For instance, real-time estimators ofsome or all surface “identity” values may be run at every frame or atevery N frames of the image sensor (e.g., every 5 frames). In someembodiments, a real-time estimator can be a fast process (e.g., usinghardware and/or software) to compute some of the surface identify values(e.g., contrast, feature density, etc.). In some aspects, a surfaceclassifier program may include a process to computer most or all surfaceidentity values, determine a type of surface based on those values,store the most relevant and quick-to-compute surface identity values(e.g., the values that can be checked in the real-time estimatorprocess), and set all sensor parameter for an optimal tracking on thetype of surface.

At operation 970, method 900 can include determining whether apredetermined number of the set of values (the surface identity vector)stay within a threshold range of the surface identity vector stored inthe optical sensor, according to certain embodiments. When thesubsequent predetermined surface identity values (e.g., LED current,pixel integration time, pixel noise filtering threshold, number of highgradient pixels, number of high gradient pixels remaining after applyingdigital filters (e.g., morphological filters), etc.) change but staywithin a threshold range, the optical sensor maintains its currentsensor tracking parameter settings (operation 980) until the next timethe surface identity values are evaluated (e.g., operations 960 and 970may be iterated). Any suitable threshold range for each surface identityvalue can be used (e.g., surface identity value stays within 5% ofinitial measured value), as would be appreciated by one of ordinaryskill in the art with the benefit of this disclosure. When thepredetermined set of surface identity values fall out of the thresholdrange, or if a lift detection is triggered, method 900 can continue tomethod 1000 (operation 990).

It should be appreciated that the specific steps illustrated in FIG. 9provide a particular method 900 for improving computer peripheral devicetracking accuracy on a work surface using surface classification andsensor tuning, according to certain embodiments. Other sequences ofsteps may also be performed according to alternative embodiments.Furthermore, additional steps may be added or removed depending on theparticular applications. Any combination of changes can be used and oneof ordinary skill in the art with the benefit of this disclosure wouldunderstand the many variations, modifications, and alternativeembodiments thereof.

FIG. 10 is a simplified flow chart showing aspects of a method 1000 forimproving computer peripheral device tracking accuracy on a work surfaceusing surface classification and sensor tuning, according to certainembodiments. Method 1000 can be performed by processing logic that maycomprise hardware (circuitry, dedicated logic, etc.), software operatingon appropriate hardware (such as a general purpose computing system or adedicated machine), firmware (embedded software), or any combinationthereof. In certain embodiments, method 1000 can be performed by aspectsof processor(s) 210, memory 220, input detection module 250 (e.g.,controlling aspects of optical sensor 480), or any combination thereof.

At operation 1010, method 1000 can include detecting a significantlydifferent physical properties of an underlying surface, according tocertain embodiments. This may occur if a user has moved the computerperipheral device from one surface to another that has markedlydifferent physical properties.

At operation 1020, method 1000 can include re-analyzing an image surfaceand/or edge maps with a surface classifier to identify the underlyingsurface type, according to certain embodiments.

At operation 1030, method 1000 can include computing a new set ofsurface identity values (the new surface identity vector) tocharacterize physical properties of the underlying surface, according tocertain embodiments.

At operation 1040, method 1000 can include determining whether thesurface identity vector (the surface identity values) are out of rangebut sufficiently similar to currently stored value, according to certainembodiments. If the surface identity values are out of range, butsufficiently similar, a second set of surface identity values (theout-of-range surface identity values) can be stored in parallel to thecurrent surface identity values so that the system can quickly switchbetween the two sets of surface identity values (operation 1042). Insome cases, a surface identity vector may cause relatively frequentupdating between the two surface identity values because they aresimilar. In such cases, a two threshold approach (one for each set ofvalues) can be used to implement a hysteresis to prevent frequentswitching between the two and to better stabilize the system, as wouldbe appreciated by one of ordinary skill in the art with the benefit ofthis disclosure. If the surface identity values are different enoughfrom the currently stored values, the newly computed surface identityvalues are stored in replacement of the previous surface identity values(operation 1044).

At operation 1050, method 1000 can include tuning sensor trackingparameters for improved tracking on a known surface identity, accordingto certain embodiments. The tuned sensor tracking parameters may bestored (e.g., in on-board sensor flash memory) and recalled when thesame surface type is later identified.

At operation 1060, method 1000 can include determining whether apredetermined number of the set of surface identity values are within athreshold range, according to certain embodiments. Real-time estimatorsof some or all of the surface identity values can be run at every frame,at every N frames, or other frequency of frame analysis of the opticalsensor. When the subsequent predetermined surface identity values (e.g.,LED current, pixel integration time, pixel noise filtering threshold,etc.) change but stay within a threshold range, the optical sensormaintains its current sensor tracking parameter settings (operation1070) until the next time the surface identity values are evaluated(e.g., operations 1060 and 1070 may be iterated). Any suitable thresholdrange for each surface identity value can be used (e.g., surfaceidentity value stays within 5% of initial measured value), as would beappreciated by one of ordinary skill in the art with the benefit of thisdisclosure. If the newly measured predetermined set of surface identityvalues fall out of the threshold range, but match the second set ofsurface identity values (operation 1080), then the current sensortracking parameters can be updated to match the stored second set ofsurface identity values from operation 1042 (operation 1090). If thenewly measured predetermined set of surface identity values does notmatch the second set of surface identity values, or if a lift detectionis triggered, the method may return to operation 1010.

It should be appreciated that the specific steps illustrated in FIG. 10provide a particular method 1000 for improving computer peripheraldevice tracking accuracy on a work surface using surface classificationand sensor tuning, according to certain embodiments. Other sequences ofsteps may also be performed according to alternative embodiments.Furthermore, additional steps may be added or removed depending on theparticular applications. Any combination of changes can be used and oneof ordinary skill in the art with the benefit of this disclosure wouldunderstand the many variations, modifications, and alternativeembodiments thereof.

In addition to the benefits provided by improving a surface trackingperformance by optimizing an optical sensor to a particular surfacetype, other sensor operations can be positively benefitted from theseoptimizations. For instance, tracking responsiveness and stability maybe positively affected as knowing which type of surface features will bedetected (e.g., knowing the surface type) can be leveraged to helpignore or reduce the deleterious effects of noise and to better identifywhen actual motion begins. DPI accuracy can be improved as each surfacetype can have a unique set of characteristics (surface identity values)that can positively or negatively affect DPI response. Knowing what thesurface identity values are can help to better lock to a pitch orpattern of the surface type. DPI vs. angle accuracy may be improved.Assuming that the surface has a pattern, it would be possible tocompensate tracking for changes in orientation, e.g., a cloth surfacebunches or folds, wood surface with oriented veins, etc. Lift detectionaccuracy can be improved due the novel system and methods presentedherein. For example, different surface types may offset a spot (LEDillumination) center position. Knowing the particular contours of thesurface and how it affect the spot center position can help the computerperipheral device determine what is nominal and what is more likely alift event. In some aspects, lift compensation can be improved as aresult of surface classification. For instance, knowing a location of aspot versus the height of a given surface could help the system tocompensate for a magnification change and keep reporting a same DPI.Further, power consumption can be improved with surface classification.Knowing a surface type can allow the system to tighten or relax powerrequirements to ensure good operation with reduced wasted powertypically associated with worst case scenario tracking, as noted above.

Any number of sensor tracking parameters can be affected when tuning anoptical sensor to operate on a particular surface type. Some sensortracking parameters were described above with respect to FIGS. 9-10,however many other sensor tracking parameters can be adjusted tooptimize tracking on a particular surface type, including but notlimited to a sensor exposure threshold, exposure time value and/or range(pixel integration time), LED current and/or range, illuminationgradient filtering and/or correction, flash rate range, flash ratestrategy (e.g., down-shift, rest mode rate, burst flash mode, etc.),front end-to-logic conversion threshold (e.g., analog-to-digital), pixelnoise filtering threshold, image and/or edge map filtering, correlationwindow position, correlation window size, correlation peak threshold,correlation strategy, choice of sub-pixel computation algorithm, imageand/or edge map memory number, image and/or edge map memory strategy,DPI scaling factor, trajectory compensation, lift detection algorithm,lift detection threshold, illumination spot position (range), activepixel array position, active pixel array size, predefined sensor mode(e.g., gaming or office performance modes), sensor-to-mouse report rate,computer peripheral device-to-PC report rate, and more, as would beappreciated by one of ordinary skill in the art with the benefit of thisdisclosure.

By way of example, some exemplary embodiments that fall within thepurview of the various embodiments described above (e.g., methods 900,1000) may include a computer peripheral device (e.g., a computer mouse)comprising a housing (e.g., a computer mouse chassis, shell ,etc.), acommunication module coupled to the housing and configured tocommunicatively couple the computer peripheral device with a hostcomputer device (e.g., via Bluetooth; Wi-Fi, NFC, RF, etc.), one or moreinput elements (e.g., buttons, scroll wheel, etc.) coupled to thehousing, the one or more input elements configured to be actuable (e.g.,pressable, manipulable, etc.) by a user of the computer peripheraldevice and an optical sensor coupled to the housing, the optical sensorconfigured to generate optical data corresponding to a surface that thecomputer peripheral device is placed upon. The computer peripheraldevice can have one or more processors coupled to the optical sensor andthe housing and may be configured to determine a relative displacementof the computer peripheral device along the surface based on the opticaldata, identify one or more characteristics of the surface (e.g., thesurface identity values) based on the optical data, compare the one ormore characteristics with one or more corresponding baseline (e.g.,reference) characteristics stored in memory (e.g., surface identityvalue(s) for surface types stored in optical sensor flash), classify atype of the surface based on the comparing of the one or morecharacteristics with one or more corresponding baseline characteristics,and adjust an aspect of the determination of the relative displacementof the peripheral device, and/or an operation of the optical sensor thatalters the generating of the optical data based on the classified typeof the surface.

In some embodiments, the computer peripheral device (e.g., using any ofmethods 900-1100 and/or system 200 or any of the various embodimentsdescribed herein) can use a detected characteristic profile of thesurface for “zeroing” a spot position as being the nominal for thatgiven surface. For example, once the surface is known and confirmed, thecomputer mouse can better account for a given spot shift, which isnormal and due to the nature of the surface. Having trustableinformation can allow the system to decouple spot shift due to lift(mouse not well in contact) and spot shift due to a nature andreflectance of the surface. In some embodiments, a front end to logicconversion threshold (e.g., Analog to Digital) can be adjusted (e.g.,increase performance) based on the surface characteristics as well. Insome embodiments, a computer mouse can have a predefined sensor mode(e.g., gaming or office mode) where the sensor and/or mouse operation isdefined based on the identified surface. For instance, a surfaceclassification that indicates a glass surface or wood table may signifyto the system that the computer mouse is likely being used in an officeenvironment rather than a gaming environment (given the low quality ofsurface characteristics) and auto-switch the mouse to operateaccordingly (e.g., switch to a lower performance, low power state,etc.), as would be appreciated by one of ordinary skill in the art withthe benefit of this disclosure.

FIG. 11 is a simplified flow chart showing aspects of a method 1100 forimproving computer peripheral device tracking accuracy on a work surfaceusing surface classification and sensor tuning, according to certainembodiments. Method 1100 can be performed by processing logic that maycomprise hardware (circuitry, dedicated logic, etc.), software operatingon appropriate hardware (such as a general purpose computing system or adedicated machine), firmware (embedded software), or any combinationthereof. In certain embodiments, method 1100 can be performed by aspectsof processor(s) 210, memory 220, input detection module 250 (e.g.,controlling aspects of optical sensor 480), or any combination thereof.

At operation 1110, method 1100 can include generating optical datacorresponding to an underlying surface, according to certainembodiments.

At operation 1120, method 1100 can include determining a relativedisplacement along the surface, according to certain embodiments.

At operation 1130, method 1100 can include identifying one or morecharacteristics of the surface based on the optical data, according tocertain embodiments. In some cases, the characteristics can include atleast one of a surface brightness, surface contrast, and/or a number ordensity of surface features.

At operation 1140, method 1100 can include comparing the one or morecharacteristics with baseline characteristics stored in memory,according to certain embodiments. In some implementations, the comparingincludes matching a pattern stored in memory with a pattern capturedfrom the surface using the optical sensor. The computer peripheraldevice may include a plurality of stored characteristic profiles eachcorresponding to a respective surface type and is applied based on theclassified type of surface.

At operation 1150, method 1100 can include classifying a type of thesurface based on the comparison, according to certain embodiments. Insome cases, classifying can be done, for example, by a decision treealgorithm, a heuristic algorithm, or a machine-learned algorithm (e.g.,learned decision tree, k-Nearest Neighbor, support vector machine,Random Forest, neural network, etc.), as would be appreciated by one ofordinary skill in the art with the benefit of this disclosure.

At operation 1160, method 1100 can include adjusting the determinationof the relative displacement or the operation of the optical sensorbased on the classified surface type, according to certain embodiments.In some embodiments, two different sets of optical data can be generatedby the optical sensor, where the first set of optical data is used bythe one or more processors for computing the relative displacement ofthe computer peripheral device along the surface, and where the secondset of optical data is used by the one or more processors forclassifying the surface. In some cases, the first set of optical dataand the second set of optical data can be generated at different timesby a time-divisional multiplexing control schema.

In further embodiments, before the type of surface is classified, theone or more processors can be configured to determine the relativedisplacement of the computer peripheral device along multiple types ofsurfaces at a first accuracy threshold. After the type of surface isclassified, the one or more processors may be configured to determinethe relative displacement of the computer peripheral device along theclassified type of surface at a second accuracy threshold that is higherthan the first accuracy threshold and along surfaces other than theclassified type of surface at a range spanning from the first accuracythreshold and lower.

In some embodiments, the classification of the surface type can beperformed dynamically depending on at least one of a number of featuresper area detected by the optical sensor and/or a detection of an invalidor unlikely movement.

In further embodiments, adjusting the aspect the operation of theoptical sensor can include at least one of: adjust a current or range ofan LED used by the computer peripheral device to reflect light off ofthe surface, wherein the optical sensor generates the optical data basedon the reflected light; adjust an exposure setting for the opticalsensor; adjust a white level setting for the optical sensor; adjust apixel integration time for the optical sensor; adjust a dots-per-inch(DPI) scaling factor; adjust an active pixel array position or size; oradjust an optical sensor report rate.

In some embodiments, adjusting the aspect of the determination of therelative displacement includes at least one of: adjust a number ofmemory slots used to store progressively captured images generated bythe optical sensor; adjust a contrast ratio used to detect surfacefeatures on the surface; adjust a threshold number of features used todetect the relative displacement; adjust a threshold contrast used toidentify the surface features; adjust a threshold brightness used toidentify the surface features; or adjust a threshold size used toidentify the features. Alternatively or additionally, the computerperipheral device can include exterior lighting elements that areadjusted depending on whether a particular type of surface is currentlydetected.

It should be appreciated that the specific steps illustrated in FIG. 11provide a particular method 1100 for improving computer peripheraldevice tracking accuracy on a work surface using surface classificationand sensor tuning, according to certain embodiments. Other sequences ofsteps may also be performed according to alternative embodiments.Furthermore, additional steps may be added or removed depending on theparticular applications.

Surface Classification Data From an External Source

In the embodiments described above, surface classification is done bythe peripheral computer device by obtaining optical data, determiningsurface characteristics and generating a surface identity vector,comparing the surface characteristics to saved baseline surface types totune the optical sensor to operate better with the determined surfacecharacteristics. In some cases, the surface characteristics are comparedto a baseline value. In each of these scenarios, the surface type isdetermined by the computer peripheral device. In some embodiments, asurface type and corresponding surface identity features can be obtainedfrom an external source, allowing the computer peripheral device to bequickly tuned to improve movement tracking on the particular surfacetype without requiring the rigorous computations described above.

In some embodiments, the surface type can be reported by the surfaceitself, e.g., by a mouse pad. The mouse pad could, for instance throughcertified reporting, actively report its characteristics to the computerperipheral device.

FIG. 12A shows a powered mousepad 1240 coupled to a laptop computer 1210with a display 1120 and keyboard 1230, according to certain embodiments.The powered mousepad 1240 can be configured to wirelessly transmit powerand data to a computer peripheral device 400, according to certainembodiments. The powered mousepad (e.g., Logitech PowerPlay®) may sendmachine-readable data corresponding to one or more surface identityvalues of the mousepad. The computer peripheral device 400 may tune itssurface tracking methodology (e.g., tune the optical sensor) based onthe surface identity values, which may computed or determined based on asimilar surface type stored in memory of computer peripheral device 400.

FIG. 12B shows a QR code 1250 configured on a mouse pad 1242, accordingto certain embodiments. QR code 1250 (or similar printed encodingschema) may have encoded machine-readable data corresponding to one ormore surface identity values of mousepad 1242. The computer peripheraldevice 400 may tune the optical sensor based on the surface identityvalues, which may computed or determined based on a similar surface typestored in memory of computer peripheral device 400. In some aspects,surface information can be micro-encoded in the mousepad such that theoptical sensor can readily be used to detect the type of surface anddetect when the sensor is no longer sensing that particular surface. Thesurface itself may have a certain pattern and/or color combinationinstead of a having a code itself that can be detectable by a mouse andmatched to a performance set.

FIG. 12C shows an RFID circuit 1260 configured within a mouse pad 1244,according to certain embodiments. RFID circuit 1260 may be batterypowered or may be powered by the host computing device (e.g., via USBconnection). In some embodiments, the RFID circuit can be passive andcan be configured to receive power by the reader device (e.g., computermouse), which can be possible as the amount of data can be relativelylow. RFID circuit 1260 may transmit encoded machine-readable data to thecomputer peripheral device 400 (or indirectly through a host computingdevice) that corresponds to one or more surface identity values ofmousepad 1244. The computer peripheral device 400 may tune the opticalsensor based on the surface identity values, which may computed ordetermined based on a similar surface type stored in memory of computerperipheral device 400. In some embodiments, other wireless methods(e.g., RF) or wired methods (e.g., USB, FireWire, etc.) can reportsurface identity values to the host computer or directly to the computerperipheral device. In some embodiments, a near-field communications(NFC) device or other passive circuit can be wirelessly interrogated bythe computer mouse. In some cases, wireless power transfer can havesurface information encoded therein whether it is RF, inductive,capacitive, magnetic, etc. In some embodiments, a mouse may switch offof the surface classification tuning when the mouse is no longer on asurface. NFC or other techniques can be used wherein the data transferhas a limited wireless transfer range, which can make detecting itpossible when in close range, and can be used to control when surfacetracking should be applied. In certain embodiments, a computer mouse canbe operated in a time-sliced mode where the mouse classifies thesurfaces in one time period and detects 2D movement in another timeperiod. Using this concept, the mouse may disable the time period whenthe surface is classified (or between time periods of periodicallyrechecking the surface classification), improving power performanceand/or tracking capabilities (enabling higher framerates, for example).

FIG. 12D shows a graphical user interface (GUI) 1280 on a display 1270that is configured for selecting a surface type to be used by a computerperipheral device, according to certain embodiments. GUI 1280 may beconfigured to receive user inputs to select a particular surface type tobe used (e.g., mouse pad, wood desk, glass table, etc.) and transmitencoded machine-readable data corresponding to the selected surface typeto the computer peripheral device 400 that includes one or more surfaceidentity values of the selected surface to be used. Referring to FIG.12D, the user selected a mouse pad in the selector carousel, which isreflected in the drop down menu showing that the “mouse pad” isselected. A user may select a surface type icon, select a name from adrop down menu, or type a surface type identifier that can accesssurface identity values for the selected surface from a look up table orother data base, as would be appreciated by one of ordinary skill in theart with the benefit of this disclosure

FIG. 13 is a simplified flow chart showing aspects of a method 1300 forimproving computer peripheral device tracking accuracy on a work surfaceusing surface classification data received from an external source,according to certain embodiments. Method 1300 can be performed byprocessing logic that may comprise hardware (circuitry, dedicated logic,etc.), software operating on appropriate hardware (such as a generalpurpose computing system or a dedicated machine), firmware (embeddedsoftware), or any combination thereof. In certain embodiments, method1300 can be performed by aspects of processor(s) 210, memory 220, inputdetection module 250 (e.g., controlling aspects of optical sensor 480),or any combination thereof, or a combination thereof. In the context ofmethod 1300, a “first device” may refer to and underlying device with asurface, such as a mouse pad, and a “second device” may refer to acomputer peripheral device, such as a computer mouse.

At operation 1310, method 1300 can include generating, by a sensor on acomputer peripheral device (e.g., a computer mouse 400), optical datacorresponding to a first device (e.g., a mousepad, table, desk, etc.)having a surface that the computer peripheral device is placed upon,according to certain embodiments.

At operation 1320, method 1300 can include determining a relativedisplacement of the computer peripheral device as it is moved along thesurface of the first device, according to certain embodiments.

At operation 1330, method 1300 can include receiving machine-readabledata related to the surface of the first device from identificationfeatures of the first device, according to certain embodiments. Theidentification features can include surface features such as a QR codeor other electronically scannable features. In some cases, theidentification feature can be an RFID chip or other device that canelectronically interface (e.g., via hardwired or wireless connection)with a computer peripheral device. The machine-readable data related tothe surface of the first device may be one or more surface identityvalues.

At operation 1340, method 1300 can include configuring the computerperipheral device to determine the relative displacement differentlybased on the machine-readable data related to the surface of the firstdevice, according to certain embodiments.

In some embodiments, the first device can include a non-contact powertransmitter (e.g., a powered mouse pad), the second device may receivepower from the transmitter, and the machine-readable data related to thesurface can be encoded in the power transmitted from the first device tothe second device, as shown for example in FIG. 12A.

In some embodiments, the identification feature may be a near-fieldcommunication (NFC)-type short range non-contact processor that isdetectable by the second device when the second device is in closeproximity to the first device. In some implementations, the determiningthe relative displacement along the surface differently based on themachine-readable data related to the surface includes switching from afirst surface tuning profile to a second surface tuning profile, wherethe second device reverts back from the second surface tuning profile tothe first surface tuning profile when not in proximity to the firstdevice.

In some cases, the sensor can be an optical sensor, and theidentification feature can be a pattern encoded onto the surface that isreadable by the optical sensor, such as the QR code depicted in FIG.12B. In some aspects, the machine-readable data related to the surfacecan be a reference used by the second device to locate surface tuninginformation (e.g., via a lookup table). The data related to the surfacemay characterize the surface directly and can be used by the seconddevice for its own tuning. In some aspects, the second device mayinclude a universal tuning mechanism that is overridden when it detectsthe data related to the surface. In certain embodiments, the surface maybe selected (e.g., selecting a surface identity vector) by the user froma list of options, such as via a GUI on a computer screen, as shown inFIG. 12D.

It should be appreciated that the specific steps illustrated in FIG. 13provide a particular method 1300 for improving computer peripheraldevice tracking accuracy on a work surface using surface classificationdata received from an external source (e.g., a surface or GUI),according to certain embodiments. Other sequences of steps may also beperformed according to alternative embodiments. Furthermore, additionalsteps may be added or removed depending on the particular applications.Any combination of changes can be used and one of ordinary skill in theart with the benefit of this disclosure would understand the manyvariations, modifications, and alternative embodiments thereof.

In some embodiments, a system can implement the various aspects ofmethod 1300. For instance a system may comprise a first device (e.g.,mouse pad) including a surface and an identification feature, where theidentification feature includes or encodes machine-readable data relatedto the surface. The system may include a second device (e.g., computerperipheral device such as a computer mouse) including a sensor and oneor more processors coupled to the sensor. The one or more processors canbe configured to determine a relative displacement of the second deviceas it is moved along the surface of the first device by a user of thesecond device, receive the machine-readable data related to the surfacefrom the identification feature of the first device, and configure thesecond device to determine the relative displacement along the surfacedifferently based on the machine-readable data related to the surface.In some cases, determining the relative displacement different maycorrespond to performing a surface classification procedure, asdescribed above with respect to FIGS. 9-11. However, in the presentcase, the surface type if provided by the underlying device (firstdevice) so that the second device (computer mouse) can adapt theoperation of its sensor (optical sensor) to improve (e.g., optimize) itstracking parameters relative to the known surface. In other words,instead of tuning the optical sensor to operate over a wide range ofsurfaces, which typically requires performance trade-offs to accommodatevarying surface qualities and features, the optical sensor can be finelytuned to a known surface (or known with sufficient confidence) so thattracking can be improved, less power may be utilized, and the othermyriad benefits as described above.

In some aspects, the first device can include a non-contact powertransmitter, the second device receives power from the transmitter, andthe machine-readable data related to the surface can be encoded in thepower transmitted from the first device to the second device. In furtherembodiments, the identification feature can be a near-fieldcommunication (NFC)-type short range non-contact processor that isdetectable by the second device when the second device is in closeproximity to the first device, where the determining the relativedisplacement along the surface differently based on the machine-readabledata related to the surface includes switching from a first surfacetuning profile to a second surface tuning profile, and where the seconddevice reverts back from the second surface tuning profile to the firstsurface tuning profile when not in proximity to the first device. Insome cases, the sensor is an optical sensor, and the identificationfeature is a pattern encoded onto the surface that is readable by theoptical sensor. The machine-readable data related to the surface can bea reference used by the second device to locate surface tuninginformation. The data related to the surface can characterize thesurface directly and can be used by the second device for its owntuning. In some aspects, the second device includes a universal tuningmechanism that is overridden when it detects the data related to thesurface. One of ordinary skill in the art with the benefit of thisdisclosure would appreciate the many modifications, variations, andalternative embodiments thereof.

Most embodiments utilize at least one network that would be familiar tothose skilled in the art for supporting communications using any of avariety of commercially available protocols, such as TCP/IP, UDP, OSI,FTP, UPnP, NFS, CIFS, and the like. The network can be, for example, alocal area network, a wide-area network, a virtual private network, theInternet, an intranet, an extranet, a public switched telephone network,an infrared network, a wireless network, and any combination thereof.

In embodiments utilizing a network server as the operation server or thesecurity server, the network server can run any of a variety of serveror mid-tier applications, including HTTP servers, FTP servers, CGIservers, data servers, Java servers, and business application servers.The server(s) also may be capable of executing programs or scripts inresponse to requests from user devices, such as by executing one or moreapplications that may be implemented as one or more scripts or programswritten in any programming language, including but not limited to Java®,C, C# or C++, or any scripting language, such as Perl, Python or TCL, aswell as combinations thereof. The server(s) may also include databaseservers, including without limitation those commercially available fromOracle®, Microsoft®, Sybase® and IBM®.

Such devices also can include a computer-readable storage media reader,a communications device (e.g., a modem, a network card (wireless orwired), an infrared communication device, etc.), and working memory asdescribed above. The computer-readable storage media reader can beconnected with, or configured to receive, a non-transitorycomputer-readable storage medium, representing remote, local, fixed,and/or removable storage devices as well as storage media fortemporarily and/or more permanently containing, storing, transmitting,and retrieving computer-readable information. The system and variousdevices also typically will include a number of software applications,modules, services or other elements located within at least one workingmemory device, including an operating system and application programs,such as a client application or browser. It should be appreciated thatalternate embodiments may have numerous variations from that describedabove. For example, customized hardware might also be used and/orparticular elements might be implemented in hardware, software(including portable software, such as applets) or both. Further,connections to other computing devices such as network input/outputdevices may be employed.

Numerous specific details are set forth herein to provide a thoroughunderstanding of the claimed subject matter. However, those skilled inthe art will understand that the claimed subject matter may be practicedwithout these specific details. In other instances, methods,apparatuses, or systems that would be known by one of ordinary skillhave not been described in detail so as not to obscure claimed subjectmatter. The various embodiments illustrated and described are providedmerely as examples to illustrate various features of the claims.However, features shown and described with respect to any givenembodiment are not necessarily limited to the associated embodiment andmay be used or combined with other embodiments that are shown anddescribed. Further, the claims are not intended to be limited by any oneexample embodiment.

While the present subject matter has been described in detail withrespect to specific embodiments thereof, it will be appreciated thatthose skilled in the art, upon attaining an understanding of theforegoing may readily produce alterations to, variations of, andequivalents to such embodiments. Accordingly, it should be understoodthat the present disclosure has been presented for purposes of examplerather than limitation, and does not preclude inclusion of suchmodifications, variations, and/or additions to the present subjectmatter as would be readily apparent to one of ordinary skill in the art.Indeed, the methods and systems described herein may be embodied in avariety of other forms; furthermore, various omissions, substitutionsand changes in the form of the methods and systems described herein maybe made without departing from the spirit of the present disclosure. Theaccompanying claims and their equivalents are intended to cover suchforms or modifications as would fall within the scope and spirit of thepresent disclosure.

Although the present disclosure provides certain example embodiments andapplications, other embodiments that are apparent to those of ordinaryskill in the art, including embodiments which do not provide all of thefeatures and advantages set forth herein, are also within the scope ofthis disclosure. Accordingly, the scope of the present disclosure isintended to be defined only by reference to the appended claims.

Unless specifically stated otherwise, it is appreciated that throughoutthis specification discussions utilizing terms such as “processing,”“computing,” “calculating,” “determining,” and “identifying” or the likerefer to actions or processes of a computing device, such as one or morecomputers or a similar electronic computing device or devices, thatmanipulate or transform data represented as physical electronic ormagnetic quantities within memories, registers, or other informationstorage devices, transmission devices, or display devices of thecomputing platform.

The system or systems discussed herein are not limited to any particularhardware architecture or configuration. A computing device can includeany suitable arrangement of components that provide a result conditionedon one or more inputs. Suitable computing devices include multi-purposemicroprocessor-based computer systems accessing stored software thatprograms or configures the computing system from a general purposecomputing apparatus to a specialized computing apparatus implementingone or more embodiments of the present subject matter. Any suitableprogramming, scripting, or other type of language or combinations oflanguages may be used to implement the teachings contained herein insoftware to be used in programming or configuring a computing device.

Embodiments of the methods disclosed herein may be performed in theoperation of such computing devices. The order of the blocks presentedin the examples above can be varied—for example, blocks can bere-ordered, combined, and/or broken into sub-blocks. Certain blocks orprocesses can be performed in parallel.

Conditional language used herein, such as, among others, “can,” “could,”“might,” “may,” “e.g.,” and the like, unless specifically statedotherwise, or otherwise understood within the context as used, isgenerally intended to convey that certain examples include, while otherexamples do not include, certain features, elements, and/or steps. Thus,such conditional language is not generally intended to imply thatfeatures, elements and/or steps are in any way required for one or moreexamples or that one or more examples necessarily include logic fordeciding, with or without author input or prompting, whether thesefeatures, elements and/or steps are included or are to be performed inany particular example.

The terms “comprising,” “including,” “having,” and the like aresynonymous and are used inclusively, in an open-ended fashion, and donot exclude additional elements, features, acts, operations, and soforth. Also, the term “or” is used in its inclusive sense (and not inits exclusive sense) so that when used, for example, to connect a listof elements, the term “or” means one, some, or all of the elements inthe list. The use of “adapted to” or “configured to” herein is meant asopen and inclusive language that does not foreclose devices adapted toor configured to perform additional tasks or steps. Additionally, theuse of “based on” is meant to be open and inclusive, in that a process,step, calculation, or other action “based on” one or more recitedconditions or values may, in practice, be based on additional conditionsor values beyond those recited. Similarly, the use of “based at least inpart on” is meant to be open and inclusive, in that a process, step,calculation, or other action “based at least in part on” one or morerecited conditions or values may, in practice, be based on additionalconditions or values beyond those recited. Headings, lists, andnumbering included herein are for ease of explanation only and are notmeant to be limiting.

The various features and processes described above may be usedindependently of one another, or may be combined in various ways. Allpossible combinations and sub-combinations are intended to fall withinthe scope of the present disclosure. In addition, certain method orprocess blocks may be omitted in some embodiments. The methods andprocesses described herein are also not limited to any particularsequence, and the blocks or states relating thereto can be performed inother sequences that are appropriate. For example, described blocks orstates may be performed in an order other than that specificallydisclosed, or multiple blocks or states may be combined in a singleblock or state. The example blocks or states may be performed in serial,in parallel, or in some other manner. Blocks or states may be added toor removed from the disclosed examples. Similarly, the example systemsand components described herein may be configured differently thandescribed. For example, elements may be added to, removed from, orrearranged compared to the disclosed examples.

What is claimed is:
 1. A system comprising: a mouse pad including asurface and an identification feature, wherein the identificationfeature includes or encodes machine-readable data corresponding tosurface characteristics related to the surface including a surfacebrightness, a surface contrast, and a density of surface features on thesurface of the mouse pad; a computer mouse including an optical sensorand one or more processors coupled to the optical sensor, wherein theone or more processors are configured to: determine a relativedisplacement of the computer mouse based on data from the optical sensoras the computer mouse is moved along the surface of the mouse pad by auser of the computer mouse; receive the machine-readable data related tothe surface from the identification feature of the mouse pad; andconfigure the computer mouse to change a tuning of an operation of theoptical sensor based on the surface characteristics of themachine-readable data related to the surface.
 2. The system of claim 1,wherein the mouse pad includes a non-contact power transmitter, thecomputer mouse receives power from the transmitter, and themachine-readable data related to the surface is encoded in the powertransmitted from the mouse pad to the computer mouse.
 3. The system ofclaim 1, wherein the identification feature is a near-fieldcommunication (NFC)-type short range non-contact processor that isdetectable by the computer mouse when the computer mouse is in closeproximity to the mouse pad, wherein the determining the relativedisplacement along the surface differently based on the machine-readabledata related to the surface includes switching from a first surfacetuning profile to a second surface tuning profile, and wherein thecomputer mouse reverts back from the second surface tuning profile tothe first surface tuning profile when not in proximity to the mouse pad.4. The system of claim 1, wherein the sensor is an optical sensor, andthe identification feature is a pattern encoded onto the surface that isreadable by the optical sensor.
 5. The system of claim 1, wherein themachine-readable data related to the surface is a reference used by thecomputer mouse to locate surface tuning information.
 6. The system ofclaim 1, wherein the data related to the surface characterizes thesurface directly and is used by the computer mouse for its own tuning.7. The system of claim 1, wherein the second device computer mouseincludes a universal tuning mechanism that is overridden when it detectsthe data related to the surface.
 8. A computer-implemented methodcomprising: generating, by a computer mouse, optical data correspondingto a surface of an underlying mouse pad that the computer mouse isplaced upon; determining a relative displacement of the computer mouseas it is moved along a surface of an underlying mouse pad by a user ofthe computer mouse, wherein the underlying mouse pad includes anidentification feature on the surface that includes or encodesmachine-readable data related to the surface; receiving themachine-readable data related to the surface from the identificationfeature of the underlying mouse pad; and configuring the computer mouseto switch from a universal surface tracking setting to a second surfacetracking setting different from the universal surface tracking settingwhile the computer mouse detects the machine-readable data.
 9. Themethod of claim 8, wherein the computer mouse includes a non-contactpower transmitter, the underlying mouse pad receives power from thetransmitter, and the machine-readable data related to the surface isencoded in the power transmitted from the underlying mouse pad to thecomputer mouse.
 10. The method of claim 8, wherein the identificationfeature is a near-field communication (NFC)-type short range non-contactprocessor that is detectable by the computer mouse when the computermouse is in close proximity to the underlying mouse pad, wherein thedetermining the relative displacement along the surface differentlybased on the machine-readable data related to the surface includesswitching from a first surface tuning profile to a second surface tuningprofile, and wherein the computer mouse reverts back from the secondsurface tuning profile to the first surface tuning profile when not inproximity to the underlying mouse pad.
 11. The method of claim 8,wherein the optical data is generated by an optical sensor, and theidentification feature is a pattern encoded onto the surface that isreadable by the optical sensor.
 12. The method of claim 8, wherein themachine-readable data related to the surface is a reference used by thecomputer mouse to locate surface tuning information.
 13. The method ofclaim 8, wherein the data related to the surface characterizes thesurface directly and is used by the computer mouse for its own tuning.14. A computer mouse comprising: a housing; an optical sensor coupled tothe housing, the optical sensor configured to generate optical datacorresponding to a surface that the computer mouse is placed upon; andone or more processors coupled to the optical sensor and the housing,the one or more processors configured to: determine a relativedisplacement of the computer mouse as it is moved along a surface of amouse pad; receive machine-readable data related to the surface of themouse pad from an identification feature of the mouse pad, theidentification feature corresponding to surface characteristics relatedto the surface of the mouse pad including a surface brightness, asurface contrast, and a density of surface features on the surface ofthe mouse pad; and configure the computer mouse to determine therelative displacement along the surface of the mouse pad differentlybased on the machine-readable data related to the surface.
 15. Thecomputer mouse of claim 14, wherein the mouse pad includes a non-contactpower transmitter, the computer mouse receives power from thetransmitter, and the machine-readable data related to the surface isencoded in the power transmitted from the mouse pad to the computermouse.
 16. The computer mouse of claim 14, wherein the identificationfeature is a near-field communication (NFC)-type short range non-contactprocessor that is detectable by the computer mouse when the computermouse is in close proximity to the mouse pad, wherein the determiningthe relative displacement along the surface differently based on themachine-readable data related to the surface includes switching from afirst surface tuning profile to a second surface tuning profile, andwherein the computer mouse reverts back from the second surface tuningprofile to the first surface tuning profile when not in proximity to themouse pad.
 17. The computer mouse of claim 14, wherein the sensor is anoptical sensor, and the identification feature is a pattern encoded ontothe surface that is readable by the optical sensor.
 18. The computermouse of claim 14, wherein the machine-readable data related to thesurface is a reference used by the computer mouse to locate surfacetuning information.
 19. The computer mouse of claim 14, wherein the datarelated to the surface characterizes the surface directly and is used bythe computer mouse for its own tuning.